#include <stdio.h>
#include "ftpserver.h"
#include <signal.h>
#include <unistd.h>

int main(int argc,char *argv[])
{
    if(argc != 3)
    {
        printf("./use < IP port\n");
        return -1;
    }

    //注册一个信号处理函数
    signal(SIGCHLD,SIG_IGN);

    //创建一个TCP服务器
    int sockfd = init_tcpserver(argv[1],atoi(argv[2]));
    //不断接收客户端的连接
    while(1)
    {
        //accept接收客户端的连接
        struct sockaddr_in clientaddr;
        memset(&clientaddr ,0,sizeof(clientaddr));
        socklen_t len = sizeof(clientaddr);
        int clientfd = accept(sockfd,(struct sockaddr *)&clientaddr,&len);
        if(clientfd < 0)//连接失败，结束后续操作，重新接收
        {
            perror("accept failed");
            continue;
        }
        //连接成功
        printf("clientfd:IP:%s,port:%d\n",inet_ntoa(clientaddr.sin_addr),ntohs(clientaddr.sin_port));
       
        //创建一个进程，处理客户端的连接
        pid_t pid = fork();

        if(pid == 0)//子进程
        {
            //关闭服务端套接字
            close(sockfd);

            //处理客户端的请求
            handle_connection(clientfd);

            //关闭客户端的套接字
            exit(0);
        }
        else if(pid > 0)//父进程
        {
            //关闭客户端套接字
            close(clientfd);
            //可以接收其他客户端的请求
        }
        else
        {
            perror("fork failed");
            printf("create fork failed");
            exit(-1);
        }
    }
    return 0;

}